// #include<stdio.h>
// #include<sys/types.h>
// #include<sys/wait.h>
// #include<unistd.h>
// #include<stdlib.h>


// void catchsig(int sig)
// {
//     printf("catch a sig : %d , pid->%d\n",sig,getpid());
// }

// int main()
// {
//     signal(SIGCHLD,catchsig);
//     pid_t id = fork();

//     if(id<0)
//     {
//         printf("fork error!\n");
//         exit(-1);
//     }
//     else if(id==0)
//     {
//         int cnt = 3;
//         while(cnt)
//         {
//             printf("this is a child process! id-->%d   pid-->%d  ppid--> %d\n",cnt--,getpid(),getppid());
//         }
//         //exit(-1);
//        int i =  10/0;
//     }

//     sleep(2);
//     int status = 0;
//     pid_t ret = waitpid(id,&status,0);
//     if(id>0)
//         //0-7:终止信号 15-8:退出状态
//         printf("wait success:%d , sign number:%d , child exit code:%d\n",ret,(status & 0x7F),(status>>8 & 0xFF));

//     return 0;
// }

#include<unistd.h>    
#include<stdio.h>    
#include<sys/wait.h>    
#include<stdlib.h>    
int main()    
{    
  if(fork()==0)    
  {    
    printf("command begin\n");    
    execl("/usr/bin/ls","ls","-a","-l",NULL);                                                                                                            
    printf("command fail\n");    
    exit(1);    
  }    
  waitpid(-1,NULL,0);    
  printf("wait child success\n");    
  return 0;    
} 
